home *** CD-ROM | disk | FTP | other *** search
/ Complete Linux / Complete Linux.iso / docs / system / linux_bo / netboot.zoo / string.c < prev    next >
Encoding:
C/C++ Source or Header  |  1993-05-04  |  2.3 KB  |  167 lines

  1. #include "utils.h"
  2.  
  3. /* Copyright 1993 Jamie Honan
  4.    May be freely used, sold, modified
  5. */
  6.  
  7. char * strcpy(char *dest, const char *src)
  8. {
  9.     char *sav;
  10.  
  11.     sav = dest;
  12.     while ((*dest++ = *src++) != '\0')
  13.        ;
  14.     return sav;
  15. }
  16.  
  17. int strcmp(const char *a, const char *b)
  18. {
  19.     while(1)
  20.     {
  21.         if (*a != *b)
  22.         {
  23.             if (*(unsigned char *)a > *(unsigned char *)b)
  24.                 return 1;
  25.             else
  26.                 return -1;
  27.         }
  28.         if (*a == '\0')
  29.             break;
  30.         a++;
  31.         b++;
  32.     }
  33.     return 0;
  34. }
  35.  
  36. int   strncmp(const char *a, const char *b, size_t len)
  37. {
  38.  
  39.     while (len--)
  40.     {
  41.         if (*a != *b)
  42.         {
  43.             if (*(unsigned char *)a > *(unsigned char *)b)
  44.                 return 1;
  45.             else
  46.                 return -1;
  47.         }
  48.         if (*a == '\0')
  49.             break;
  50.         a++;
  51.         b++;
  52.     }
  53.     return 0;
  54. }
  55.  
  56. void  *  memset(void  *buffer, int c, size_t len)
  57. {
  58. char *cbp;
  59.     cbp = buffer;
  60.     while(len--)
  61.         *cbp++ = (char)c;
  62.     return (buffer);
  63. }
  64.  
  65. char  *   strncpy(char *dest, const char *src, size_t maxlen)
  66. {
  67.     char  *sav;
  68.  
  69.     for(sav = dest; maxlen && *src; maxlen--, dest++,src++)
  70.         *dest = *src;
  71.     if (maxlen)
  72.         *dest = '\0';
  73.     return sav;
  74. }
  75.  
  76. void  *   memcpy(void  *dest, const void  *src, size_t cnt)
  77. {
  78. char  *cdest;
  79. const char  *csrc;
  80.  
  81.     cdest = dest;
  82.     csrc = src;
  83.  
  84.     while(cnt--)
  85.         *cdest++ = *csrc++;
  86.     return (dest);
  87. }
  88.  
  89. void far * fmemcpy(void far *dst, const void far * src, size_t cnt)
  90. {
  91. char  far *cdest;
  92. const char  far *csrc;
  93.  
  94.     cdest = cannon(dst);
  95.     csrc = cannon(src);
  96.  
  97.     /* small attempt at overlap */
  98.     if (cdest > csrc && cdest < csrc +  cnt)
  99.     {
  100.         csrc += cnt;
  101.         cdest += cnt;
  102.         while(cnt--)
  103.             *--cdest = *--csrc;
  104.     }
  105.     else
  106.     {
  107.         while(cnt--)
  108.             *cdest++ = *csrc++;
  109.     }
  110.     return (dst);
  111. }
  112.  
  113. void lmemcpy(unsigned long dest, void *data, size_t len)
  114. {
  115. char far *ptr;
  116.  
  117.     ptr = long2far(dest);
  118.     while(len--)
  119.         *ptr++ = *((char *)(data))++;
  120. }
  121.  
  122.  
  123. int   memcmp(const void *a, const void *b, size_t len)
  124. {
  125.     const unsigned char *ua, *ub;
  126.  
  127.     ua = a;
  128.     ub = b;
  129.  
  130.     while (len--)
  131.     {
  132.         if (*ua != *ub)
  133.         {
  134.             if (*ua > *ub)
  135.                 return 1;
  136.             else
  137.                 return -1;
  138.         }
  139.         ua++;
  140.         ub++;
  141.     }
  142.     return 0;
  143. }
  144.  
  145.  
  146. char  *   strchr(const char *str, int c)
  147. {
  148.     do
  149.        if (*str == c)
  150.           return (str);
  151.     while (*str++);
  152.  
  153.     return ((char  *) 0);
  154. }
  155.  
  156. size_t strlen(const char *str)
  157. {
  158.     register unsigned int len = 0;
  159.  
  160.     while (*str++)
  161.        ++len;
  162.  
  163.     return len;
  164. }
  165.  
  166.  
  167.